package css.sword.util;
//
//import java.io.FileOutputStream;
//import java.io.IOException;
//import java.net.HttpURLConnection;
//import java.net.URL;
//import java.util.ArrayList;
//import java.util.Arrays;
//import java.util.Date;
//import java.util.HashMap;
//import java.util.List;
//import java.util.Map;
//import java.util.Properties;
//
//import org.apache.axis.client.Call;
//import org.apache.axis.client.Service;
//import org.apache.log4j.Logger;
//
//import com.alibaba.fastjson.JSONObject;
//import com.horizon.app.commonUtils.SelUnitUtils;
//import com.horizon.app.gwgl.util.CommonUtil;
//import com.horizon.app.gwgl.util.FileUitl;
//import com.horizon.context.Context;
//import com.horizon.db.Access;
//import com.horizon.dom4j.DocumentException;
//import com.horizon.dom4j.DocumentHelper;
//import com.horizon.dom4j.tree.DefaultElement;
//import com.horizon.organization.workgroup.GroupOperImpl;
//import com.horizon.services.ServerConfigUtil;
//import com.horizon.util.StringUtil;
//import com.szoa.TimeUtil;
//import com.tencent.zwwx.MsgSdk;
//import com.tencent.zwwx.MsgSdk.TargetType;

public class SmsUtil {
	
//    private static final Logger logger = Logger.getLogger(SmsUtil.class);
//    private static final Properties SMS_PROPERTIES = FileUitl.getPropertiesDetail("sms-template.properties");
//    /**
//     * 返回短信接口是否开启,true为开启，false为未开启。
//     * @param phone
//     * @param content
//     * @return
//     */
//    public static boolean sendSms(String phone, String content) {
//    	//替换厅领导及以上的手机号，短信默认发厅领导如果有秘书发给秘书
//    	phone=replacePhone(phone);
//        Map<String, String> smsCfMap = ServerConfigUtil.getSmsConfig();
//        if (null == smsCfMap || !"1".equals(smsCfMap.get("starts"))) {
//        	logger.error(Thread.currentThread().getName()+"短信配置信息为空或平台已经停止短信服务，请确认...");
//        	return false;
//        }
//
//        new SendSMS(phone, content,smsCfMap).start();
//        return true;
//    }
//    /**
//     * 返回短信接口是否开启,true为开启，false为未开启。
//     * @param phone
//     * @param content
//     * @return
//     */
//    public static boolean sendloginSms(String phone, String content) {
//        Map<String, String> smsCfMap = ServerConfigUtil.getSmsConfig();
//        if (null == smsCfMap || !"1".equals(smsCfMap.get("starts"))) {
//        	logger.error(Thread.currentThread().getName()+"短信配置信息为空或平台已经停止短信服务，请确认...");
//        	return false;
//        }
//
//        new SendSMS(phone, content,smsCfMap).start();
//        return true;
//    }
//	/**
//	 * 1、返回短信接口是否开启,true为开启，false为未开启（或手机号为空）；<br/>
//	 *
//	 * @param phones
//	 *            可以传递一或多个手机号（以“,”分隔）。
//	 * @param params
//	 * @param templateName
//	 *            短信模板的名称
//	 * @return
//	 */
//	public static boolean sendSms(String phones, Map<String, String> params,
//			String templateName) {
//		if (!StringUtil.hasValue(phones)) {
//			logger.warn("短信号码为空！！！！！");
//			return false;
//		}
//		String content = getContent(params, templateName);
//		return sendSms(phones, content);
//	}
//
//	/**
//	 * 1、返回短信接口是否开启,true为开启，false为未开启（或手机号为空）；<br/>
//	 * 2、示例：params：String[][] arrs = new String[][] { { "key1", "value1" }, {
//	 * "key2", "value2" }, { "key3", "value3" } };
//	 *
//	 * @param phones
//	 *            可以传递一或多个手机号 （以“,”分隔）。
//	 * @param params
//	 * @param templateName
//	 *            短信模板的名称
//	 * @return
//	 */
//	public static boolean sendSms(String phones, String[][] params,
//			String templateName) {
//
//		if (!StringUtil.hasValue(phones)) {
//			logger.warn("短信号码为空！！！！！");
//			return false;
//		}
//		String content = getContent(params, templateName);
//		if(!StringUtil.hasValue(content)) {
//			logger.warn("短信内容为空！！！！！");
//			return false;
//		}
//		System.out.println("sendSMSSucess"+TimeUtil.getFormatDate(new Date(), "yyyy-MM-DD HH:mm:ss")+"\t短信发送参数:"+phones+"\t"+content);
//		return sendSms(phones, content);
//	}
//
//	public static boolean sendWx(String wxIds,String[][] params,String templateName ) {
//		if (!StringUtil.hasValue(wxIds)) {
//			logger.warn("微信号码为空！！！！！");
//			return false;
//		}
//		String content = getContent(params, templateName);
//		if(!StringUtil.hasValue(content)) {
//			logger.warn("微信内容为空！！！！！");
//			return false;
//		}
//		logger.info("sendSMSSucess"+TimeUtil.getFormatDate(new Date(), "yyyy-MM-DD HH:mm:ss")+"\t短信发送参数:"+wxIds+"\t"+content);
//		JSONObject sx = new MsgSdk().sendText(TargetType.TOUSER, wxIds, content);
//		logger.info(sx.toJSONString());
//		return true;
//	}
//
//	public static boolean sendWx(String wxIds,String[][] params,String templateName ,String url,String title) {
//		if (!StringUtil.hasValue(wxIds)) {
//			logger.warn("微信号码为空！！！！！");
//			return false;
//		}
//		String content = getContent(params, templateName);
//		if(!StringUtil.hasValue(content)) {
//			logger.warn("微信内容为空！！！！！");
//			return false;
//		}
//		logger.info("sendSMSSucess"+TimeUtil.getFormatDate(new Date(), "yyyy-MM-DD HH:mm:ss")+"\t短信发送参数:"+wxIds+"\t"+content);
//		JSONObject sx = new MsgSdk().sendTextCard(TargetType.TOUSER, wxIds, title,url,content);
//		logger.info(sx.toJSONString());
//		return true;
//	}
//
//
//	/**
//	 * 1、返回短信接口是否开启,true为开启，false为未开启（或手机号为空）；<br/>
//	 * 2、示例：params：String[][] arrs = new String[][] { { "key1", "value1" }, {
//	 * "key2", "value2" }, { "key3", "value3" } };
//	 *
//	 * @param phones
//	 *            可以传递一或多个手机号
//	 * @param params
//	 * @param templateName
//	 *            短信模板的名称
//	 * @return
//	 */
//	public static boolean sendSms(List<String> phones, String[][] params,
//			String templateName) {
//		StringBuilder sbPhones = new StringBuilder();
//		if (phones != null && phones.size() > 0) {
//			for (String phone : phones) {
//				sbPhones.append("," + phone);
//			}
//			sbPhones.deleteCharAt(0);
//		}
//		return sendSms(sbPhones.toString(), params, templateName);
//	}
//
//	/**
//	 * 1、过滤掉厅领导及以上的手机号，短信不能发给厅领导及以上；<br/>
//	 * 2、包含的领导群组：秘书长、厅领导、市领导等<br/>
//	 *
//	 * @param phone
//	 * @return
//	 */
//	private static String filterPhone(String phone) {
//		if (!StringUtil.hasValue(phone)) {
//			return "";
//		}
//		String[] phs = phone.split(",");
//		GroupOperImpl service = new GroupOperImpl();
//		List<String> leaderPhones = service.leaderPhones();
//		// step
//		List<String> newPhones = new ArrayList<String>();
//		if (phs != null) {
//			for (int i = 0; i < phs.length; i++) {
//				if (!leaderPhones.contains(phs[i])) {
//					newPhones.add(phs[i]);
//				}
//			}
//		}
//		// step
//		StringBuilder sb = new StringBuilder();
//		if (newPhones != null && newPhones.size() > 0) {
//			for (String newPhone : newPhones) {
//				sb.append("," + newPhone);
//			}
//			sb.deleteCharAt(0);
//		}
//		return sb.toString();
//	}
//	/**
//	 * 1、替换厅领导及以上的手机号，短信默认发厅领导如果有秘书发给秘书；<br/>
//	 * 2、包含的领导群组：秘书长、厅领导、市领导等<br/>
//	 *
//	 * @param phone
//	 * @return
//	 */
//	private static String replacePhone(String phone) {
//		if (!StringUtil.hasValue(phone)) {
//			return "";
//		}
//		String[] phs = phone.split(",");
//		GroupOperImpl service = new GroupOperImpl();
//		List<String> leaderPhones = service.leaderPhones();
//		// step
//		if (phs != null) {
//			for (int i = 0; i < phs.length; i++) {
//				if (leaderPhones.contains(phs[i])) {
//					//如果有秘书替换成秘书手机号
//					String sec_sql="select e.sec_id from To_Horizon_User  e where e.cellphone='"+phs[i]+"'";
//					String sel_ids=String.valueOf(Access.getSingleMap(sec_sql, null).get("sec_id"));
//					if(!StringUtil.hasValue(sel_ids)){
//						sel_ids="";
//					}else{
//						sel_ids="U_"+sel_ids+";";
//					}
//					String sec_Phones=SelUnitUtils.getPhoneByUserIds(sel_ids);
//				    if(StringUtil.hasValue(sec_Phones)) {
//				    	Arrays.fill(phs,i,i+1,sec_Phones);
//				    };
//
//				}
//			}
//		}
//		// step
//		StringBuilder sb = new StringBuilder();
//		if (phs != null && phs.length > 0) {
//			for (String newPhone : phs) {
//				sb.append("," + newPhone);
//			}
//			sb.deleteCharAt(0);
//		}
//		return sb.toString();
//	}
//	/**
//	 * 1、根据模板、参数值生成相应的短信内容。<br/>
//	 *
//	 * @param params
//	 * @param templateName
//	 *            短信模板的名称
//	 * @return
//	 */
//	public static String getContent(Map<String, String> params,
//			String templateName) {
//		String content = SMS_PROPERTIES.getProperty(templateName);
//		if (params == null || params.size() <= 0) {
//			return "";
//		}
//		for (Map.Entry<String, String> param : params.entrySet()) {
//			String key = param.getKey();
//			String val = param.getValue();
//			val = StringUtil.hasValue(val) ? val : "";
//			content = content.replace("{" + key + "}", val);
//		}
//		return content;
//	}
//
//	/**
//	 * 1、根据模板、参数值生成相应的短信内容。<br/>
//	 * 2、示例：String[][] arrs = new String[][] { { "key1", "value1" }, { "key2",
//	 * "value2" }, { "key3", "value3" } };
//	 *
//	 * @param params
//	 * @param templateName
//	 *            短信模板的名称
//	 * @return
//	 */
//	public static String getContent(String[][] params, String templateName) {
//		String content = SMS_PROPERTIES.getProperty(templateName);
//		if (params == null || params.length <= 0) {
//			return "";
//		}
//		for (int i = 0; i < params.length; i++) {
//			String key = params[i][0];
//			String val = params[i][1];
//			val = StringUtil.hasValue(val) ? val : "";
//			content = content.replace("{" + key + "}", val);
//		}
//		return content;
//	}
//    /**
//     * XML短信返回值解析
//     *
//     * @param ret
//     * @return
//     */
//    private static List<Map<String, String>> getSmsRetXML(String xml) {
//
//        List<Map<String, String>> maps = new ArrayList<Map<String, String>>();
//
//        DefaultElement smsXML = null;
//        try {
//            smsXML = (DefaultElement) DocumentHelper.parseText(xml).getRootElement();
//        } catch (DocumentException de) {
//            de.printStackTrace();
//        } catch (Exception ex) {
//            ex.printStackTrace();
//        }
//        if (smsXML != null) {
//            List<DefaultElement> bodyXMLs = smsXML.element("body").elements("msgid");
//            if (null != bodyXMLs && !bodyXMLs.isEmpty()) {
//                for (DefaultElement bodyXML : bodyXMLs) {
//                    String phone = bodyXML.getText();
//                    if (StringUtil.hasValue(phone)) {
//                        Map<String, String> map = new HashMap<String, String>();
//                        map.put("phone", phone.split(",")[0]);
//                        map.put("sendKey", phone.split(",")[phone.split(",").length - 1]);
//                        maps.add(map);
//                    }
//                }
//            }
//        }
//        return maps;
//    }
//    public static void log(String path,String content) {
//    	try {
//   		 FileOutputStream fos=new FileOutputStream(path,true);
//   		 fos.write(content.getBytes());
//   		 fos.close();
//    	} catch (IOException e1) {
//    		e1.printStackTrace();
//    	}
//    }
//
//    public static void main(String[] args) {
//
//        // 群发
//        System.out.println("-------------短信测试开始-----------------");
//        SmsUtil.sendSms("13581792825", "你好，测试！");
//        // List<Map<String, String>> list=
//        // SmsUtil.sendSms("13581792825,18612866993,12345678910", "你好，测试！");
//        // List<Map<String, String>> list=
//        // SmsUtil.getSmsRetXML("<?xml version=\"1.0\" encoding=\"GBK\" ?><response><head><code>0</code><message></message></head><body><msgid>18611627087,201611151450404330</msgid><msgid>18612110300,201611151450404331</msgid><msgid>18810405898,201611151450404332</msgid><reserve></reserve></body></response>");
//        System.out.println("-------------短信测试结束-----------------");
//    }
//}
//class SendSMS extends Thread{
//
//	private static final Logger logger = Logger.getLogger(SmsUtil.class);
//
//	private String phone;
//	private String content;
//	private Map<String, String> smsCfMap;
//
//	SendSMS(String phone,String content,Map<String, String> smsCfMap){
//		this.phone=phone;
//		this.content=content;
//		this.smsCfMap=smsCfMap;
//	}
//
//	@Override
//	public void run() {
//		logger.info(Thread.currentThread().getName()+"\t短信发送参数:"+phone+"\t"+content);
//        int state = 200;
//        if (StringUtil.hasValue(phone) && StringUtil.hasValue(content)) {
//            // Map<String,String> smsCFMap = ServerConfigUtil.getSmsConfig();
//            // 做限制上线删除 不要随便乱动（勿动勿动勿动勿动勿动）
//            // phone = "18811348147";
//            // System.out.println("短信手机号都发送到《彭健》的手机号中");
//            try {
//                String endpoint = smsCfMap.get("server_ip");// "http://203.91.55.69/services/Sms";
//                // 判断短信webservices是否有效2017年5月31日
//                URL url = new URL(endpoint);
//                HttpURLConnection con = (HttpURLConnection) url.openConnection();
//                state = con.getResponseCode();
//                if (state == 200) {
//                    // -----------完成--------------
//                    Service service = new Service();
//                    Call call = null;
//                    call = (Call) service.createCall();
//
//                    // 采用AZDG方式加密
//                    String username = smsCfMap.get("server_user");// "250";
//                    String password = smsCfMap.get("server_pw");// "1qaz2wsx";
//                    Azdg azdg = new Azdg();
//                    username = azdg.getEncryption(username);
//                    password = azdg.getEncryption(password);
//
//                    // 发送短信
//                    call.setOperationName("InsertDownSms");
//
//                    call.setTargetEndpointAddress(new URL(endpoint));
//                    // 短信XML格式
//                    StringBuilder boayBud = new StringBuilder();
//                    boayBud.append("<sendbody>");
//                    boayBud.append("<message>");
//                    boayBud.append("<orgaddr></orgaddr>");
//                    // 手机号
//                    boayBud.append("<mobile>");
//                    boayBud.append(phone);
//                    boayBud.append("</mobile>");
//                    // 内容
//                    boayBud.append("<content>");
//                    boayBud.append(CommonUtil.replaceEscape(content));
//                    boayBud.append("</content>");
//
//                    boayBud.append("<sendtime></sendtime>");
//                    boayBud.append("<needreport>0</needreport>");
//                    boayBud.append("</message>");
//                    boayBud.append("<publicContent>");
//                    boayBud.append("</publicContent>");
//                    boayBud.append("</sendbody>");
//                    logger.info(Thread.currentThread().getName()+"\t短信发送XML："+boayBud.toString());
//                    String ret = (String) call.invoke(new Object[] { username, password, "", boayBud.toString() });
//                    logger.info(Thread.currentThread().getName()+"\t短信响应XML："+ret);
//                }
//            } catch (Exception e) {
//                e.printStackTrace();
//                logger.debug(Thread.currentThread().getName()+e.getMessage());
//            }
//        }
//	}
}